﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Queries;

namespace Matriculex.Dominio
{
    [ActiveRecord("rematricula"), Serializable]
    public class Rematricula : RemovableEntityWithId<Rematricula>
    {
        // construtor vazio necessário para o ActiveRecord
        protected Rematricula() { }

        public Rematricula(AlunoFechado aluno, DateTime data, Ciclo ciclo)
        {
            this.Aluno = aluno;
            this.Data = data;
            Ciclo = ciclo;
        }

        [Property]
        public DateTime? Data{ get; set; }
        [Nested]
        public Ciclo Ciclo { get; set; }
        [BelongsTo]
        public AlunoFechado Aluno { get; set; }

        public static Rematricula[] FindAllByCiclo(Ciclo ciclo)
        {
            var query = new SimpleQuery<Rematricula>(
            @"from Rematricula r where r.Ciclo.Ano = :ano and r.Ciclo.Trimestre = :trimestre");
            query.SetParameter("ano", ciclo.Ano);
            query.SetParameter("trimestre", ciclo.Trimestre);

            return query.Execute().Where(o => o.Ativado).ToArray();
        }
    }
}
